//判断是否登录
var TestUserLogin = function(loginCallback, failCallback){
	srvMap.add("user-info", "../../assets/data/user.json", "front/sh/login!getUserInfo?uid=p001");
	Util.ajax.postJson(srvMap.get('user-info'),'',function(data,flag){
		if(data.data){
			loginCallback && loginCallback();
		}else{
			failCallback && failCallback();
		}
	});
};

//判断是否登录，返回登录标记，0代表未登录，返回1代表登录
var userLoginFlag = function(){
	srvMap.add("user-info", "../../assets/data/user.json", "front/sh/login!getUserInfo?uid=p001");
	var loginFlag = 0 ;
	Util.ajax.postJsonSync(srvMap.get('user-info'),'',function(data,flag){
		if("0"===data.returnCode){
			loginFlag = 1 ;
		}
	});
	return loginFlag;
};
//判断用户是否登录，没有登录跳转到登录页面
var checkUserLogin = function(){
	if(!userLoginFlag()){
		console.log(document.location.href);
        sessionStorage.setItem("returnUrl",document.location.href);
		window.location="../login.html";
	}
}

//获取登录用户的userLoginId
var getUserLoginId = function(){
	var userLoginId = "";
	srvMap.add("user-info", "../../assets/data/user.json", "front/sh/login!getUserInfo?uid=p001");
	Util.ajax.postJsonSync(srvMap.get('user-info'),'',function(data,flag){
		if(data.key){
			userLoginId = data.key;
		}
	});
	return userLoginId;
}


//判断用户是否选择记住密码，如果记住密码，直接登录
var remberPassLogin = function(){
    srvMap.add("getRandomCode","","front/sh/login!sendLoginKeyValue?uid=s001"); 
    //获取随机token
    var loginKey;
    var loginValue;
    function getOneCode(){
        Util.ajax.postJsonSync(srvMap.get("getRandomCode"),{},function(json,flag){
            if(json.returnCode && json.returnCode === "0"){
                loginKey = json.bean.loginKey;
                loginValue = json.bean.loginValue;
            }
        });
    }
    //记住密码登陆
    var cookieUserName = localStorage.getItem('cookieUserName');
    if(cookieUserName!=null){
        //获取随机token
        getOneCode();
        var encryPassword = localStorage.getItem('encryPassword');
        var cookieUuid = localStorage.getItem('cookieUuid');
        var param = "username="+cookieUserName+"&password="+encryPassword+"&rememberMe=1&cacheUuid="+cookieUuid+"&loginKey="+loginKey+"&loginValue="+loginValue;
        srvMap.add("merchantLogin","","front/sh/login!merchantLogin?uid=w001"); //账号登录
        if(!userLoginFlag()){
            Util.ajax.postJsonSync(srvMap.get('merchantLogin'),param,function(data,flag){
                if(data.returnCode === '-9999'){
                    Util.Tips.warning(data.bean.msg,'bottom',true);
                    //记住密码秘钥过期，清除localstorage中信息
                    localStorage.removeItem('cookieUserName');
                    localStorage.removeItem('encryPassword');
                    localStorage.removeItem('cookieUuid');
                    //重新获取登陆token
                    getOneCode();
                }
            });
        } 
    }
}



$(document).ready(function() {

    //用户记住密码登陆
    remberPassLogin();


    // 返回顶部
    var scroll_Top = $("#scrollTop"); //返回顶部按钮
    $(window).scroll(function() {
        if ($(window).scrollTop() >= 200) {

            scroll_Top.fadeIn(800);
        } else {
            scroll_Top.fadeOut(200);
        }
    });
    scroll_Top.click(function() {
        //点击滚动条
        $("body,html").animate({
            scrollTop: 0
        }, 300);
        return false;
    });

    //编辑购物车删除订单按钮高度
    var edit_con = $(".edit-order").height();
    $(".edit-order").children('a').height(edit_con);

    //让筛选产品外层盒子的高度始终是100%
    $(".filter-wrap,.filter-form").height($(window).height());
    //定义筛选条件外层的盒子高度
    var filter_main = $(window).height() - 115;
    $(".filter-box").height(filter_main);

    //如果窗口的尺寸发生变化
    $(window).resize(function() {
        //编辑购物车删除订单按钮高度
        var edit_con = $(".edit-order").height();
        $(".edit-order").children('a').height(edit_con);

        //让筛选产品外层盒子的高度始终是100%
        $(".filter-wrap,.filter-form").height($(window).height());

        //定义筛选条件外层的盒子高度
        var filter_main = $(window).height() - 115;
        $(".filter-box").height(filter_main);
    });
    //搜索框获得焦点
    var searchInput = $("#J_search_input");
    var clearSearch = $("#J_clear_search");
    var searchBt = $("#J_search_btn");

    //搜索框获得焦点或是键盘按下时
    searchInput.on('focus keyup', function() {
        
        if (searchInput.val() !== '') {
            searchBt.hide();
            clearSearch.show();
            //筛选二字变为取消二字
            $("a.off-search").text("取消");            
        }else{
        	clearSearch.hide();
            //筛选二字变为取消二字
            $("a.off-search").text("筛选");            
        }
        clearSearch.click(function() {
            searchInput.val('');
            $("a.off-search").text("筛选");  
            $(this).hide();
            searchBt.show();
        });
    });
    

    // 点击筛选弹出筛选框
    silderLeft($(".filter-pro"), $(".filter-wrap"), $(".colse-filter"));


    //选择排序
    //var ui_cover = $(".ui-cover"); //遮盖层
    var orsder_item = $("#J_order_wrap span");
    //var price_order = $("#J_price_order"); //价格排序按钮
    // var price_check = $("#J_price_check"); //价格排序按钮选择
    //var sales_order = $("#J_sales_order"); //销量排序按钮
    // var sales_check = $("#J_sales_check"); //销量排序选择

    //点击价格排序时执行
    orsder_item.click(function(event) {

        if (!$(this).hasClass('current')) {
            // 如果点击的是按价格排序，箭头默认朝上，
            if (event.currentTarget.id === "J_price_order") {
                $(this).removeClass('default');
            }
            $(this).addClass('current').siblings().removeClass('current');
        }

        if (event.currentTarget.id === "J_price_order") {
            $(this).toggleClass('default');
        }

        // 如果点击的是按销量排序，箭头变蓝，方向不改变
        if (event.currentTarget.id === "J_sales_order") {
            $(this).addClass('default');
        }

    });

    //点击发送短信验证码，调用模态框函数
    modal($("#J_send_code"), $(".ui-modal-wrap"), $(".close-modal"));
    // 点击退货，弹框
    modal($(".refund-money"), $(".ui-modal-wrap"), $(".close-modal"));
    // 触发模态框
    modal($(".trigger-modal"), $(".ui-modal-wrap"), $(".close-modal"));

    // 退款原因
    $("#J_return").click(function() {
        //点击退款原因，body追加遮盖层
        $("body").append(ui_cover_bg);
        $(".return-wrap").slideDown(100); //选择退款原因列表显示
        $(".ui-cover,#J_close").click(function() { //点击遮盖层退款原因列表隐藏，遮盖层隐藏
            $(".return-wrap").hide();
            $(".ui-cover").remove();
        });
        var child_item = $(".return-wrap").children('a');
        child_item.click(function() { //点击退款原因单个项目
            $("#J_return").val($(this).html()); //退款原因input的value值改变
            $(this).parent().hide(); //隐藏它父亲
            $(".ui-cover").remove(); //删除遮盖层
        });
    });
	
    //给点击发送验证码按钮绑定上事件
    $(".send-code-btn").click(function() {
        count(this);
    });

    //从URL中获取渠道来源,放入sessionStorage
    var cnId = Util.browser.getParameter("cnId");
    if(cnId){
        sessionStorage.setItem("cnId",cnId);
    }

});
//筛选按钮框
var ui_cover_bg = '<div class="ui-cover" style="display:block;"></div>';
function silderLeft(sub, modalBox, close) {
    sub.click(function() {    	
        if ($(this).html() === '筛选') {
            $("body").append(ui_cover_bg);
            modalBox.show();
            modalBox.animate({
                left: '10%'
            }, 100);
        } else {
            //searchInput.blur();
        	$("#J_search_input").val('');
        	$("#J_clear_search").hide();
            $(this).html('筛选');        	
        }
    });
    close.click(function() {
        modalBox.animate({
            left: '1000%'
        }, 1000);
        $("body .ui-cover").remove();
        // modalBox.hide();

    });
}
//tabs
function tabs(tabs_item, content) {

    tabs_item.click(function(event) {
        $(this).addClass('current')
            .siblings()
            .removeClass('current')
            .parent()
            .next()
            .find(content)
            .eq($(this).index())
            .show()
            .siblings()
            .hide();
    });
}
//触发模态框函数
function modal(button, modalbox, close) {
    button.click(function() {
        $("body").append(ui_cover_bg);
        modalbox.show();
    });
    close.click(function() {
        $("body .ui-cover").remove();
        modalbox.hide();
    });

}
/**
 * 获取URL参数
 */
function GetQueryString(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
    var r = window.location.search.substr(1).match(reg);
    if (r != null) return unescape(r[2]);
    return null;
}

/**
 *获取指定字符串中的URL参数
 */
 function getParamFromString(source,key){
    if(source){
        var reg = new RegExp("(^|&)" + key + "=([^&]*)(&|$)");
        var r = source.substr(1).match(reg);
        if (r != null) return unescape(r[2]);
        return null;
    }
    return null;
 }

/**
 * 获取替换URL参数,若没有则增加参数
 */
function EditQueryString(name, value, searchStr) {
    searchStr = searchStr ? searchStr : window.location.search;
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
    var r = searchStr.substr(1).match(reg);
    var search;
    if (r != null) {
        var start = r[1];
        var end = r[3];
        search = searchStr.substr(1).replace(reg, start + name + '=' + value + end);
    } else {
        search = searchStr.substr(1);
        if (searchStr) {
            search += '&';
        }
        search += name + '=' + value;
    }
    return search;
}

/**
 * 给获取URL参数的方法起个别名
 */
var getParameter = GetQueryString;

//点击发送验证码，发送按钮置灰并显示倒计时
var code_time = 60; //60s后再次获取
var code_timer; //定义定时器
//发送验证码按钮计时器
function count(o) {
    if (code_time === 0) {
        o.removeAttribute('disabled');
        o.removeAttribute('style');
        o.value = "发送验证码";
        clearInterval(code_timer);
        code_time = 60;
    } else {
        o.setAttribute("disabled", true);
        o.style.color = "#cfcfcf";
        o.style.borderColor = "#ececec";
        o.value = code_time + "秒后重新发送";
        code_time--;
        code_timer = setTimeout(function() {
            count(o);
        }, 1000);
    }
}
/**
 * 给数组添加转变为hashset(去重)方法
 */
Array.prototype.hashset = function() {
    var a = {},
        b = [];
    for (var i = 0; i < this.length; i++) {
        a[this[i]] = this[i];

    }
    for (var c=0;c<a.length;c++) {
        b.push(a[c]);
    }
    return b;
};
/**
 * 给数组添加检验是否存在一个元素的方法
 */
Array.prototype.contains = function(v) {
    for (var i = 0; i < this.length; i++) {
        if (v === this[i]) {
            return true;
        }

    }
    return false;
};
/**
 * 给数组添加获取最小值的方法
 */
Array.prototype.min = function() {
    var min = this[0];
    for (var i = 1; i < this.length; i++) {
        if (typeof(this[i]) === "number") {
            if (min > this[i]) {
                min = this[i];
            }
        }
    }
    return min;
};
/**
 * 给数组添加获取最大值的方法
 */
Array.prototype.max = function() {
    var max = this[0];
    for (var i = 1; i < this.length; i++) {
        if (typeof(this[i]) === "number") {
            if (max < this[i]) {
                max = this[i];
            }
        }
    }
    return max;
};

//Handlebars 添加判断
if (typeof Handlebars !== 'undefined') {
    Handlebars.registerHelper('compare', function(left, operator, right, options) {
        if (arguments.length < 3) {
            throw new Error('Handlerbars Helper "compare" needs 3 parameters');
        }
        var operators = {
            '==': function(l, r) {
                return l === r;
            },
            '===': function(l, r) {
                return l === r;
            },
            '!=': function(l, r) {
                return l !== r;
            },
            '!==': function(l, r) {
                return l !== r;
            },
            '<': function(l, r) {
                return l < r;
            },
            '>': function(l, r) {
                return l > r;
            },
            '<=': function(l, r) {
                return l <= r;
            },
            '>=': function(l, r) {
                return l >= r;
            },
            'typeof': function(l, r) {
                return typeof l === r;
            },
            'timesof': function(l, r) { //倍数
                return parseInt(l) % parseInt(r) === 0;
            },
            'in': function(l, r) {
                var rList = r.split('|');
                var result = false;
                for (var i = 0; i < rList.length; i++) {
                    if (rList[i] === l) {
                        result = true;
                        break;
                    }
                }
                return result;
            }
        };

        if (!operators[operator]) {
            throw new Error('Handlerbars Helper "compare" doesn\'t know the operator ' + operator);
        }

        var result = operators[operator](left, right);

        if (result) {
            return options.fn(this);
        } else {
            return options.inverse(this);
        }
    });

    //底部导航栏做成公共之后，在初始化的时候添加上当前点击的样式
    var ftBtIndex = $("#current-ft-bt-index").val();
    //定义每个导航链接对应的激活样式
    var btClass = {
        0: "home-active",
        1: "ranklist-active",
        2: "",
        3: "user-center-active"
    };
    if (ftBtIndex) {
        ftBtIndex = parseInt(ftBtIndex) - 1;
        $(".footer-nav li:eq(" + ftBtIndex + ") a").addClass("current");
        $(".footer-nav li:eq(" + ftBtIndex + ") a span").addClass(btClass[ftBtIndex]);
    }
}


/**
 * 隐藏订单号后两位
 */
Handlebars.registerHelper({
	hideOdrNo: function(str){
		return str.substr(0, str.length - 2) + "**";
	}
});


/**
 * 判断是不是微信环境
 */
function isWeiXin(){
    var ua = window.navigator.userAgent.toLowerCase();
    if(ua.match(/MicroMessenger/i) === 'micromessenger'){
        return true;
    }else{
        return false;
    }
}
/**
 * 判断是否为空
 * @auth cuiyd
 */
function isEmpty(str){
	if(!str){
		return true;
	}
	if(str===""){
		return true;
	}
	return false;
}
/**
 * 平台appID
 * 平台appsecret
 * @auth cuiyd
 */
var appId='wxf584b65064267778';
var secret='d4624c36b6795d1d99dcf0547af5443d';
var paltformUrl='http://ossl6ssaxg.proxy.qqbrowser.cc';
//给jquery扩展对手机号的操作方法
(function($){
     $.extend($,{
        phoneUtil:{
            //给手机号码添加短横分隔符
            addSeperator : function(phoneNum){
                var sep = "-";
                if(phoneNum && typeof phoneNum === "number"){
                    phoneNum = phoneNum.toString();
                }
                if (phoneNum && phoneNum.length === 11 && phoneNum) {
                    var arr = phoneNum.split("");
                    arr.splice(3,0,sep);
                    arr.splice(8,0,sep);
                    phoneNum = arr.join("");
                };
                return phoneNum;
            },
            //去掉手机号码中的短横
            removeSeprator : function(phoneNum){
                return phoneNum.replace(/-/g,"");
            }
        }
     });
})(jQuery)

$.fn.jquery = undefined;

/**
 * 日期时间工具类
 * 用于在一些活动的日期判断中，
 * 当前时间是否在指定的活动日期范围内
 */
 var DateUtil = {
    /**
     * 判断当前时间是否在开始时间和结束时间范围内
     * 入参startTime ：开始时间，格式'yyyy-MM-dd hh:mm:ss'
     * 入参endTime ：结束时间，格式'yyyy-MM-dd hh:mm:ss'
     * 出参 true:当前时间在活动时间范围内；false:当前时间不在活动时间范围内
     */
    isTimeScope : function(startTime,endTime){
        //当前时间毫秒数
        var nowMilliSecond = new Date().getTime();
        //开始时间毫秒数
        var startMilliSecond;
        //结束时间毫秒数
        var endMilliSecond;
        var startArr = startTime.split(' ');
        var startTimeFirstArr = startArr[0].split('-'); //yyyy-MM-dd 年月日
        var startTimeSecondArr = startArr[1].split(':'); //hh:mm:ss 时分秒
        var endArr = endTime.split(' ');
        var endTimeFirstArr = endArr[0].split('-');//yyyy-MM-dd 年月日
        var endTimeSecondArr = endArr[1].split(':'); //hh:mm:ss 时分秒
        startMilliSecond = new Date(startTimeFirstArr[0],parseInt(startTimeFirstArr[1])-1,startTimeFirstArr[2],startTimeSecondArr[0],startTimeSecondArr[1],startTimeSecondArr[2]).getTime();
        endMilliSecond = new Date(endTimeFirstArr[0],parseInt(endTimeFirstArr[1])-1,endTimeFirstArr[2],endTimeSecondArr[0],endTimeSecondArr[1],endTimeSecondArr[2]).getTime();
        return (nowMilliSecond>=startMilliSecond && nowMilliSecond<=endMilliSecond);
    }

};

//数字每三位加逗号
function formatNum(numStr) {
    numStr += '';
    numArr = numStr.split('.');
    prefix = numArr[0];
    suffix = numArr.length > 1 ? '.' + numArr[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(prefix)) {
        prefix = prefix.replace(rgx, '$1' + ',' + '$2');
    }
    return prefix + suffix;
}